package 力扣日常刷题.木22一月.第07天0115;

import java.util.HashMap;

/**
 * @author 帅小伙
 * @date 2022/1/15
 * @description
 * 不能使用回溯 因为   words的长度过长
 */
public class Demo04中等连接两字母单词得到的最长回文串 {

    int ans = 0;

    public int longestPalindrome(String[] words) {

        HashMap<String, Integer> map = new HashMap<>();
        for (String word : words) {
            map.put(word, map.getOrDefault(word, 0) + 1);
        }
        boolean f = true;
        for (String s : map.keySet()) {
            char[] chars = s.toCharArray();
            String st = "";
            for (int i = 0; i < 2; i++) {
                st += chars[1 - i];
            }

            if (map.containsKey(st)) {
                if(st.equals(s)){
                    if(map.get(s)>=2){
                        ans += map.get(s)/2 *2 ;
                        if(f && map.get(s)%2==1){
                            ans +=1;
                            f = false;
                        }
                    }else{
                        if(f){
                            ans +=1;
                            f = false;
                        }
                    }
                }else{
                    ans += Math.min(map.get(s), map.get(st));
                }
            }
        }
        return ans * 2;
    }
}
